package com.chukun.interview.leetcode;

import javax.swing.*;
import java.util.ArrayList;
import java.util.List;

/**
 * @author chukun@meituan.com
 * @version 1.0.0
 * @description 字符串旋转
 * @create 2022/4/7 12:10
 **/
public class StringRotated {


    public static void main(String[] args) {
        String s = "bbbacddceeb";
        String goal = "ceebbbbacdd";
        System.out.println(rotateString(s, goal));
    }

    /**
     *给定两个字符串, s和goal。如果在若干次旋转操作之后，s能变成goal，那么返回true。
     *
     * s的 旋转操作 就是将s 最左边的字符移动到最右边。
     *
     * 例如, 若s = 'abcde'，在旋转一次之后结果就是'bcdea'
     *
     * 来源：力扣（LeetCode）
     * 链接：https://leetcode-cn.com/problems/rotate-string
     * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
     * @param s
     * @param goal
     * @return
     */
    public static boolean rotateString(String s, String goal) {
        if (s.length() != goal.length()) {
            return false;
        }
        List<Integer> indexes  = new ArrayList<>(s.length());
        char goalChar = goal.charAt(0);
        char[] chars = s.toCharArray();
        for (int i=0; i<chars.length; i++) {
            if (chars[i] == goalChar) {
               indexes.add(i);
            }
        }
        if (indexes.size() == 0) {
            return false;
        }
        String newStr = "";
        for (Integer index : indexes) {
            newStr = s.substring(index) +s.substring(0, index);
            if (newStr.equals(goal)) {
                return true;
            }
        }
        return false;
    }
}
